const { register, findUser, findAllUsers, pagination, removeUser } = require('../models/users')  // 导入数据库操作方法
const { myBcrypt } = require('../utils/tools')

// 注册用户
const userRegister = async (req, res, next) => {
  res.set('content-type', 'application/json; charset=utf-8')  // 设置响应头 content-type

  const { username, password } = req.query

  // 明文密码加密
  let bcryptPassword = await myBcrypt(password)

  // 判断该用户是否存在
  let resultFind = await findUser(username)
  if (resultFind) {
    return res.render('fail', {
      data: JSON.stringify({
        message: '该用户以存在！'
      })
    })
  }

  // 进行用户插入
  let resultReg = await register({ password: bcryptPassword, username })
  if (!resultReg) {
    return res.render('fail', {
      data: JSON.stringify({
        message: '注册失败!'
      })
    })
  }

  res.render('success', {   // 渲染success 这个模板
    data: JSON.stringify({
      message: '用户注册成功！'
    })  // 这里的data 与我们在模版中定义的data 这个变量呼应
  })
}

// 获取到所有的用户
const fetchUsers = async (req, res, next) => {
  res.set('content-type', 'application/json; charset=utf-8')

  // 分页
  let { page, size } = req.query
  let getUsers = await pagination(page, size)

  let allUsers = await findAllUsers()
  if (getUsers) {
    res.render('pagination', {
      data: JSON.stringify(getUsers),
      total: JSON.stringify(allUsers.length)
    })
  }
}

// 删除用户
const my_remove = async (req, res, next) => {
  res.set("content-type", "application/json; charset=utf-8")
  const { username } = req.query

  const r_info = await removeUser(username)
  if (r_info) {
    res.render("success", {
      data: JSON.stringify('删除成功!')
    })
  }

}

module.exports = {
  userRegister,
  fetchUsers,
  my_remove
}